package cn.jinjimi.domain.data.net;

import cn.jinjimi.domain.data.dto.ActivityInfoDTO;
import cn.jinjimi.domain.data.dto.AppConfigsDTO;
import cn.jinjimi.domain.data.dto.DynamicDTO;
import cn.jinjimi.domain.data.dto.InfoModulesDTO;
import cn.jinjimi.domain.data.dto.MaterialDTO;
import cn.jinjimi.domain.data.dto.NoticeDto;
import cn.jinjimi.domain.data.dto.PlanProductDTO;
import cn.jinjimi.domain.data.dto.HeadLineDTO;
import cn.jinjimi.domain.data.dto.StartDTO;
import cn.jinjimi.app.entity.ActivityInfo;
import cn.jinjimi.app.entity.Companies;
import cn.jinjimi.app.entity.Version;

import java.util.Map;

import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;

/**
 * Created by zhenhua on 16/7/14.
 */
public interface AppService {

    /**
     * 获取全部默认配置数据
     * @return
     */
    @GET("/apps/configs")
    Call<AppConfigsDTO> getConfigs();

    /**
     * 根据配置URL获取配置数据
     * @param url
     * @return
     */
    @GET
    Call<ResponseBody> getConfig(@Url String url);

    /**
     * 根据模块名称取配置数据
     * @param module
     * @return
     */
    @GET("/apps/configs/{module}")
    Call<ResponseBody> getConfigOfModule(@Path("module") String module);

    @PUT("/app/users/start")
    Call<StartDTO> start(@Body RequestBody body);

    @POST("/app/users/integral/share")
    Call<ResponseBody> recordShare(@Query("ssoId") String ssoid,
                                   @Query("url") String url,
                                   @Query("platform") String platform);

    @GET("/apps/menus")
    Call<InfoModulesDTO> getMenus();

    @GET("/notices")
    Call<NoticeDto> getNotices(@Query("timestamp") String time);

    @GET("/app/users/remind/today")
    Call<ResponseBody> getRemind();

    @GET("/apps/companies")
    Call<Companies> getCompanies();

    @GET("/apps/companies/hot")
    Call<Companies> getHotCompanies();

    @GET("/version/android")
    Call<Version> getVersion(@Query("version_no") int version, @Query("channelId") String channel);

    @GET("bxr/apps/activities")
    Call<ActivityInfoDTO> getActivities();

    @GET("/apps/homeactivity")
    Call<HeadLineDTO> getHomeHeadLine();

    @GET("/apps/dynamic")
    Call<DynamicDTO> getHomeDynamics();

    @GET
    Call<ActivityInfo> getActivityInfo(@Url String url, @QueryMap Map<String, String> params);

    @GET("/apps/materials")
    Call<MaterialDTO> getAppMaterials();

    @GET("/vplan/products")
    Call<PlanProductDTO> getPlanProducts(@Query("company_id") int companyId);

}
